هذا السؤال له بالفعل إجابات هنا: اعكس سلسلة في بايثون (29 إجابة) مغلق منذ 4 سنوات. أحاول عكس سلسلة واستخدام الكود أدناه ولكن قيمة القائمة العكسية الناتجة هي بلا. الرمز: str_a = 'هذا تحريك' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = ". الانضمام (rev_word) تقوم بإرجاع TypeError. لماذا ا؟
2021-01-15 08:10:13
.reverse () تُرجع بلا. لذلك لا يجب أن تسنده إلى متغير. استخدم هذا بدلاً من ذلك: stra = 'هذه سلسلة' revword = stra.split () revword.reverse () revword = ''. الانضمام (كلمة إعادة) لقد قمت بتشغيل الكود على IDEOne من أجلك حتى تتمكن من رؤية الإخراج. (لاحظ أيضًا أن الإخراج هو stringaisThis ؛ قد ترغب في استخدام "" .join (revword) ، مع مسافة ، بدلاً من ذلك.) لاحظ أيضًا أن الطريقة التي قدمتها تعكس الكلمات فقط ، وليس النص. قدم @ ron.rothman رابطًا يوضح بالتفصيل كيفية عكس سلسلة كاملة. | هذه هي طريقتي الشخصية المفضلة لعكس الوتر: Stra = "هذه سلسلة" revword = stra [:: - 1] print (revword) # "gnirts a si sihT أو ، إذا كنت تريد عكس ترتيب الكلمات: revword = "" .join (stra.split () [:: - 1]) print (revword) # "string a is This" :) | انعكاسات مختلفة على سلسلة: instring = "هذه سلسلة نصية" reversestring = instring [:: - 1] طباعة عكس السلسلة # gnirts a si sihT wordsreversed = ".join (كلمة [:: - 1] للكلمة في instring.split ()) الكلمات printreversed # sihT si a gnirts revwordorder = ".join (كلمة لكلمة في instring.split () [:: - 1]) print revwordorder # string a is This revwordandorder = '' .join (كلمة [:: - 1] للكلمة في instring.split () [:: - 1]) print revwordandorder # gnirts a si sihT | للرجوع إليها في المستقبل عندما يكون للكائن طريقة مثل [] .reverse () ، فإنه ينفذ هذا الإجراء بشكل عام على الكائن (على سبيل المثال ، يتم فرز القائمة ولا تُرجع أي شيء ، لا شيء) على عكس الوظائف المضمنة مثل Sorted التي تؤدي إجراءً على كائن وإرجاع قيمة (أي القائمة التي تم فرزها) | >>> s = "هذه سلسلة نصية" >>> الصورة [:: - 1] "gnirts a siht" >>> ". الانضمام (معكوس (ق)) "gnirts a siht" | تكرر حلقة for السلسلة من النهاية (الحرف الأخير) إلى البداية (الحرف الأول) >>> s = "يمكنك تجربة هذا أيضًا:]" >>> مراجعة = " >>> لـ i في النطاق (len (s) - 1 ، -1 ، -1): ... rev + = s [i] >>> مراجعة "]: oot siht yrt nac uoY" | بناءً على التعليقات والإجابات الأخرى: str_a = "هذه سلسلة" rev_word = ".join (معكوس (str_a.split ())) تسلسل الطريقة يعمل في Python بعد كل شيء ... | يمكن عكس القائمة باستخدام أكثر من طريقة. كما هو مذكور في الإجابات السابقة ، فإن اثنين من الإجابات بارزة للغاية ، واحدة مع وظيفة عكس () واثنين مع ميزة التقطيع. أعطي بعض الأفكار حول أيهما يجب أن نفضله. يجب علينا دائمًا استخدام الدالة reverse () لعكس قائمة Python. سببان ، أحدهما انعكاس موضعي واثنان أسرع من الآخر. لدي بعض الأرقام لدعم إجابتي ، في [15]: len (l) إخراج [15]: 1000 في [16]:٪ timeit -n1 l.reverse () 1 حلقات ، أفضل 3: 7.87 s لكل حلقة في [17]:٪ timeit -n1 l [:: - 1] 1 حلقات ، أفضل 3: 10 s لكل حلقة بالنسبة لقائمة 1000 عدد صحيح ، كان أداء وظيفة عكس () أفضل مقارنةً بالتقطيع. | ليس الجواب الذي تبحث عنه؟ تصفح الأسئلة الأخرى الموسومة ببيثون أو اطرح سؤالك الخاص.